package neuroPoker4.netze.input;

import java.util.ArrayList;

import neuroPoker.netze.NetAction;
import neuroPoker.netze.NetKarte;
import neuroPoker.netze.PokerInputSit;
import neuroPoker.poker.Spieler;
import neuroPoker.poker.Tisch;
import neuroPoker.poker.Enums.Actions;
import neuroPoker.poker.Enums.Stages;
import neuroPoker4.netze.tool.NetAction2;
import neuroPoker4.netze.tool.Util;

public class PreFlopInputSitBR3 extends PokerInputSit {

	public NetKarte[] netKarten = new NetKarte[2];

	public ArrayList<NetAction> pfActionBR1 = new ArrayList<NetAction>(10);

	public ArrayList<NetAction> pfActionBR2 = new ArrayList<NetAction>(10);

	public ArrayList<NetAction> pfActionBR3 = new ArrayList<NetAction>(9);

	public PreFlopInputSitBR3(Tisch tisch, Spieler spieler) {
		this.spieler = spieler;
		// input
		// 2 Karten
		netKarten[0] = spieler.karten[0];
		netKarten[1] = spieler.karten[1];

		// preflop br1 action
		pfActionBR1 = getPrevBRAction(tisch, spieler, Stages.preFlop, 1);
		// preflop br2 action
		pfActionBR2 = getPrevBRAction(tisch, spieler, Stages.preFlop, 2);
		// br3 action
		pfActionBR3 = getActBRAction(tisch, spieler, Stages.preFlop, 3);

	}

	public double[] getInput() {
		// 68 input-neuronen
		double[] input = new double[68];
		// kartenbits setzen
		input = Util.setKartenBits(input, netKarten);
		// spieleraction bits setzen br1
		input = Util.setSpielerActionBits(input, pfActionBR1, 2, 1);
		// spieleraction bits setzen br2
		input = Util.setSpielerActionBits(input, pfActionBR2, 2, 2);
		// spieleraction bits setzen br3
		input = Util.setSpielerActionBits(input, pfActionBR3, 2, 3);

		return input;
	}

	@Override
	protected NetAction getNewNetAction(int action) {
		return new NetAction2(action);
	}

	@Override
	protected NetAction getNewNetAction(Actions action) {
		return new NetAction2(NetAction.toActionConst(action));
	}

	@Override
	public boolean isLastActionFold() {
		return pfActionBR3.get(pfActionBR3.size() - 1).equals(NetAction.fold);
	}
}
